package com.simon.cdc.utils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class TableUtils {

    /**
     * 拼接数据库和表名，生成 "db.table1,db.table2" 格式的字符串
     *
     * @param dataBase 数据库名，不得为 null
     * @param tables   表名列表，不得为 null，列表中不得包含 null 或空白的表名
     * @return 拼接后的表名字符串
     * @throws IllegalArgumentException 如果参数 dataBase 或 tables 为 null，或者 tables 中包含 null 或空白的表名，则抛出此异常
     */
    public static String buildTableList(String dataBase, List<String> tables) {
        // 检查数据库名是否为 null
        if (dataBase == null) {
            throw new IllegalArgumentException("参数 dataBase 不得为 null");
        }
        // 检查表名列表是否为 null
        if (tables == null) {
            throw new IllegalArgumentException("参数 tables 不得为 null");
        }

        // 遍历表名列表，检查是否有 null 或空白的表名
        for (String tableName : tables) {
            if (tableName == null || tableName.trim().isEmpty()) {
                throw new IllegalArgumentException("tables 列表中不得包含 null 或空白的表名");
            }
        }

        // 创建一个列表，用于存储拼接后的完整表名
        List<String> fullTableNames = new ArrayList<>(tables.size());
        // 遍历表名列表，拼接数据库名和表名
        for (String tableName : tables) {
            fullTableNames.add(dataBase + "." + tableName);
        }

        // 使用逗号拼接所有完整表名，并返回结果字符串
        return String.join(",", fullTableNames);
    }


}
